home *** CD-ROM | disk | FTP | other *** search
/ Over 1,000 Windows 95 Programs / Over 1000 Windows 95 Programs (Microforum) (Disc 1).iso / 0446 / clisrc.zip / WINAPP.H < prev    next >
C/C++ Source or Header  |  1992-03-27  |  22KB  |  635 lines

  1. // winapp.h RHS 1/13/91 rev. 12/16/91
  2.  
  3. #if !defined(WINAPP_H)
  4. #define WINAPP_H
  5.  
  6. #include<windows.h>
  7. #include<dos.h>
  8. #include"winmsg.h"
  9.  
  10. extern char *szMDIClient;
  11.  
  12. typedef struct WinAppMsg
  13.     {
  14.     WORD        msg;
  15.     WORD        wParam;
  16.     LONG        lParam;
  17.     LONG        msgRetVal;
  18.     BOOL        userMsgUsed;
  19.     } WINAPPMSG;
  20.  
  21. long far pascal WinAppWndProc(HWND hWnd, WORD msg, WORD wParam, LONG lParam);
  22.  
  23. const unsigned WINAPP_RESERVED = sizeof(void *);
  24.  
  25. /* WINAPPLICATION:
  26. An object of this class is defined once for every application. It contains the
  27. items passed to WinMain, as well as access functions for returning them. The
  28. constructor initializes them.
  29. */
  30. extern HANDLE _hInstance, _hPrev;
  31. extern int _cmdShow;
  32. extern unsigned int _psp, _pszCmdline;
  33.  
  34. class WinApplication    // Windows application class
  35.     {
  36.     static HANDLE ApphInstance;
  37.     static HANDLE hPrevInstance;
  38.     static LPSTR lpszCmdLine;
  39.     static int nCmdShow;
  40. public:
  41.     WinApplication(void)
  42.         {
  43.         ApphInstance = _hInstance;
  44.         hPrevInstance = _hPrev;
  45.         lpszCmdLine = (LPSTR)MK_FP(_psp,_pszCmdline);
  46.         nCmdShow = _cmdShow;
  47.         }
  48.     static HANDLE GetInstance(void)     { return ApphInstance;  }
  49.     static HANDLE GetPrevInstance(void) { return hPrevInstance; }
  50.     static LPSTR GetCmdLine(void)       { return lpszCmdLine;   }
  51.     static int GetCmdShow(void)         { return nCmdShow;      }
  52.     int Run(void);    // default message loop processing
  53.     virtual BOOL UserMessageProcessing(MSG *msg)    
  54.         {   
  55.         msg = msg;  // turn off compiler warning
  56.         return FALSE;   
  57.         }
  58.     virtual ~WinApplication(){}
  59.     };
  60.  
  61.    
  62. /* WINCLASS
  63. */
  64. const NOSTYLE = 0;
  65. const NOEXTRABYTES = 0;
  66.  
  67. /* defined in WINDOWS.H:
  68. typedef struct tagWNDCLASS
  69.   {
  70.     WORD        style;
  71.     LONG        (FAR PASCAL *lpfnWndProc)( HWND, WORD, WORD, LONG );
  72.     int         cbClsExtra;
  73.     int         cbWndExtra;
  74.     HANDLE      hInstance;
  75.     HICON       hIcon;
  76.     HCURSOR     hCursor;
  77.     HBRUSH      hbrBackground;
  78.     LPSTR       lpszMenuName;
  79.     LPSTR       lpszClassName;
  80.   } WNDCLASS;
  81.  */
  82.  
  83. class WinClass : public WNDCLASS
  84.     {
  85.     BOOL    class_registered;
  86. public:
  87.     WinClass(void);
  88.     void ClassRegister(void);
  89.     BOOL ClassRegistered(void);
  90.     virtual ~WinClass(){}
  91.     };
  92.  
  93. /* WINHANDLE
  94. An object of this class is created with every instance of Window (below). It
  95. contains data that controls Window creation handling, as well as the window
  96. handle.
  97.  */
  98.  
  99. class WinHandle
  100.     {
  101.     HWND hWnd;
  102.     LPSTR classname;
  103.     LPSTR windowname;
  104.     DWORD winstyle;
  105.     int upper_left_x;
  106.     int upper_left_y;
  107.     int winwidth;
  108.     int winheight;
  109.     HWND winParent;
  110.     HMENU menu;
  111.     HANDLE hInstance;
  112.     LPSTR lpParam;
  113.  
  114. public:
  115.     WinHandle(void);
  116.     HWND GetHandle(void) { return hWnd; }
  117.     BOOL Create(void);
  118.     
  119.     friend class Window;    // allow Window to modify members
  120.     virtual ~WinHandle(){}
  121.     };
  122.  
  123.  
  124. /* WINDOW
  125. */
  126. class Window : public WinApplication, WinClass
  127.     {
  128. private:
  129.     WinHandle WHdl;
  130.     int     current_display;
  131.     int     previously_visible;
  132.  
  133.     void    Show(void)
  134.         { previously_visible = ShowWindow(hWnd,current_display); }
  135.     void SetClassWinXbytes(int xtrabytes)    
  136.         { cbWndExtra = xtrabytes; }
  137.  
  138. protected:
  139.     HWND hWnd;
  140.     char    *classname;
  141.  
  142. public:
  143.     Window(char *winname);
  144.     void SethWnd(HWND h)        {   hWnd = h;   }
  145.     virtual ~Window() {}
  146.         // displays window and creates if not already created
  147.     BOOL Display(void);
  148.     BOOL Display(int display_style);
  149.     BOOL ClassRegistered(void);
  150.         // should call SetClassInstance and SetClassName if not called
  151.     void Register(void);
  152.     virtual BOOL Create(void);
  153.     HWND GetHandle(void)        { return hWnd;                      }
  154.  
  155.     void Hide(void)             { Display(SW_HIDE);                 }
  156.     void Minimize(void)         { Display(SW_MINIMIZE);             }
  157.     void Maximize(void)         { Display(SW_SHOWMAXIMIZED);        }
  158.         // displays window in original size and position
  159.     void Normalize(void)        { Display(SW_SHOWNORMAL);           }
  160.     void DefaultDisplay(void)   { current_display = GetCmdShow();   }
  161.     void Paint(void);
  162.     void Update(void)           { UpdateWindow(hWnd);            }
  163.  
  164.         // vocab of functions for modifying the registration info
  165.     void SetClassInstance(void)         { hInstance = GetInstance();    }
  166.     void SetClassName(LPSTR classname)  { lpszClassName = classname;    }
  167.     void SetClassStyle(unsigned newstyle)   { style = newstyle;         }
  168.     void AddClassStyle(unsigned addstyle)   { style |= addstyle;        }
  169.     void DelClassStyle(unsigned delstyle)   { style ^= delstyle;        }
  170.     void AddClassWinXbytes(int xtrabytes)   { cbWndExtra += xtrabytes;  }
  171.     void SetClassIcon(LPSTR iconname);
  172.     void SetClassWinProc(long (FAR PASCAL *wndProc)(HWND, unsigned, 
  173.             WORD, LONG))
  174.         {   
  175.         lpfnWndProc = wndProc;  
  176.         }
  177.     void SetClassBackGround(HBRUSH handle)  
  178.         {   
  179.         hbrBackground = (handle <= COLOR_ENDCOLORS) ? handle+1 : handle; 
  180.         }
  181.  
  182.     LPSTR GetClassName(void)            { return lpszClassName;         }
  183.     void SetClassMenu(LPSTR menuname)   {   lpszMenuName = menuname;    }
  184.  
  185.         // vocab of functions for modifying the create info
  186.     void SetWinClassName(LPSTR classname)   { WHdl.classname = classname;}
  187.     void SetWinName(LPSTR winname)  { WHdl.windowname = winname;        }
  188.     LPSTR GetWinName(void)          { return WHdl.windowname;           }
  189.     void SetWinStyle(DWORD dword)   { WHdl.winstyle = dword;            }
  190.     void AddWinStyle(DWORD dword)   { WHdl.winstyle |= dword;           }
  191.     void DelWinStyle(DWORD dword)   { WHdl.winstyle ^= dword;           }
  192.     void SetWinX(int x)             { WHdl.upper_left_x = x;            }
  193.     void SetWinY(int y)             { WHdl.upper_left_y = y;            }
  194.     void SetWinWidth(int width)     { WHdl.winwidth = width;            }
  195.     void SetWinHeight(int height)   { WHdl.winheight = height;          }
  196.     void SetWinParent(HWND hWnd)    { WHdl.winParent = hWnd;            }
  197.     void SetWinMenu(HMENU hmenu)    { WHdl.menu = hmenu;                }
  198.     void SetWinInstance(HANDLE hinst){ WHdl.hInstance = hinst;          }
  199.     void SetWinParams(LPSTR param)  { WHdl.lpParam = param;             }
  200.  
  201.     virtual void DefWinProc(WinAppMsg& m);
  202.     virtual void WMUSER(WinAppMsg& m);
  203.     virtual void UserCommandMessages(WinAppMsg& m)
  204.         {
  205.         DefWinProc(m);
  206.         m.userMsgUsed = TRUE;
  207.         }
  208.     LONG PASCAL SendMsg(WORD message, WORD wParam = 0, LONG lParam = 0L)
  209.         {
  210.         return SendMessage(hWnd,message,wParam,lParam);
  211.         }
  212.     LONG PASCAL PostMsg(WORD message, WORD wParam = 0, LONG lParam = 0L)
  213.         {
  214.         return PostMessage(hWnd,message,wParam,lParam);
  215.         }
  216.  
  217. #if defined(_WM_NULL)
  218.     virtual void WMNULL(WinAppMsg& m)               {    DefWinProc(m); }
  219. #endif
  220. #if defined(_WM_CREATE)
  221.     virtual void WMCREATE(WinAppMsg& m)             {    DefWinProc(m); }
  222. #endif
  223. #if defined(_WM_DESTROY)
  224.     virtual void WMDESTROY(WinAppMsg& m)            {    DefWinProc(m); }
  225. #endif
  226. #if defined(_WM_MOVE)
  227.     virtual void WMMOVE(WinAppMsg& m)               {    DefWinProc(m); }
  228. #endif
  229. #if defined(_WM_SIZE)
  230.     virtual void WMSIZE(WinAppMsg& m)               {    DefWinProc(m); }
  231. #endif
  232. #if defined(_WM_ACTIVATE)
  233.     virtual void WMACTIVATE(WinAppMsg& m)           {    DefWinProc(m); }
  234. #endif
  235. #if defined(_WM_SETFOCUS)
  236.     virtual void WMSETFOCUS(WinAppMsg& m)           {    DefWinProc(m); }
  237. #endif
  238. #if defined(_WM_KILLFOCUS)
  239.     virtual void WMKILLFOCUS(WinAppMsg& m)          {    DefWinProc(m); }
  240. #endif
  241. #if defined(_WM_ENABLE)
  242.     virtual void WMENABLE(WinAppMsg& m)             {    DefWinProc(m); }
  243. #endif
  244. #if defined(_WM_SETREDRAW)
  245.     virtual void WMSETREDRAW(WinAppMsg& m)          {    DefWinProc(m); }
  246. #endif
  247. #if defined(_WM_SETTEXT)
  248.     virtual void WMSETTEXT(WinAppMsg& m)            {    DefWinProc(m); }
  249. #endif
  250. #if defined(_WM_GETTEXT)
  251.     virtual void WMGETTEXT(WinAppMsg& m)            {    DefWinProc(m); }
  252. #endif
  253. #if defined(_WM_GETTEXTLENGTH)
  254.     virtual void WMGETTEXTLENGTH(WinAppMsg& m)      {    DefWinProc(m); }
  255. #endif
  256. #if defined(_WM_PAINT)
  257.     virtual void WMPAINT(WinAppMsg& m)              {    DefWinProc(m); }
  258. #endif
  259. #if defined(_WM_CLOSE)
  260.     virtual void WMCLOSE(WinAppMsg& m)              {    DefWinProc(m); }
  261. #endif
  262. #if defined(_WM_QUERYENDSESSION)
  263.     virtual void WMQUERYENDSESSION(WinAppMsg& m)    {    DefWinProc(m); }
  264. #endif
  265. #if defined(_WM_QUIT)
  266.     virtual void WMQUIT(WinAppMsg& m)               {    DefWinProc(m); }
  267. #endif
  268. #if defined(_WM_QUERYOPEN)
  269.     virtual void WMQUERYOPEN(WinAppMsg& m)          {    DefWinProc(m); }
  270. #endif
  271. #if defined(_WM_ERASEBKGND)
  272.     virtual void WMERASEBKGND(WinAppMsg& m)         {    DefWinProc(m); }
  273. #endif
  274. #if defined(_WM_SYSCOLORCHANGE)
  275.     virtual void WMSYSCOLORCHANGE(WinAppMsg& m)     {    DefWinProc(m); }
  276. #endif
  277. #if defined(_WM_ENDSESSION)
  278.     virtual void WMENDSESSION(WinAppMsg& m)         {    DefWinProc(m); }
  279. #endif
  280. #if defined(_WM_SHOWWINDOW)
  281.     virtual void WMSHOWWINDOW(WinAppMsg& m)         {    DefWinProc(m); }
  282. #endif
  283. #if defined(_WM_CTLCOLOR)
  284.     virtual void WMCTLCOLOR(WinAppMsg& m)           {    DefWinProc(m); }
  285. #endif
  286. #if defined(_WM_WININICHANGE)
  287.     virtual void WMWININICHANGE(WinAppMsg& m)       {    DefWinProc(m); }
  288. #endif
  289. #if defined(_WM_DEVMODECHANGE)
  290.     virtual void WMDEVMODECHANGE(WinAppMsg& m)      {    DefWinProc(m); }
  291. #endif
  292. #if defined(_WM_ACTIVATEAPP)
  293.     virtual void WMACTIVATEAPP(WinAppMsg& m)        {    DefWinProc(m); }
  294. #endif
  295. #if defined(_WM_FONTCHANGE)
  296.     virtual void WMFONTCHANGE(WinAppMsg& m)         {    DefWinProc(m); }
  297. #endif
  298. #if defined(_WM_TIMECHANGE)
  299.     virtual void WMTIMECHANGE(WinAppMsg& m)         {    DefWinProc(m); }
  300. #endif
  301. #if defined(_WM_CANCELMODE)
  302.     virtual void WMCANCELMODE(WinAppMsg& m)         {    DefWinProc(m); }
  303. #endif
  304. #if defined(_WM_SETCURSOR)
  305.     virtual void WMSETCURSOR(WinAppMsg& m)          {    DefWinProc(m); }
  306. #endif
  307. #if defined(_WM_MOUSEACTIVATE)
  308.     virtual void WMMOUSEACTIVATE(WinAppMsg& m)      {    DefWinProc(m); }
  309. #endif
  310. #if defined(_WM_CHILDACTIVATE)
  311.     virtual void WMCHILDACTIVATE(WinAppMsg& m)      {    DefWinProc(m); }
  312. #endif
  313. #if defined(_WM_QUEUESYNC)
  314.     virtual void WMQUEUESYNC(WinAppMsg& m)          {    DefWinProc(m); }
  315. #endif
  316. #if defined(_WM_GETMINMAXINFO)
  317.     virtual void WMGETMINMAXINFO(WinAppMsg& m)      {    DefWinProc(m); }
  318. #endif
  319. #if defined(_WM_PAINTICON)
  320.     virtual void WMPAINTICON(WinAppMsg& m)          {    DefWinProc(m); }
  321. #endif
  322. #if defined(_WM_ICONERASEBKGND)
  323.     virtual void WMICONERASEBKGND(WinAppMsg& m)     {    DefWinProc(m); }
  324. #endif
  325. #if defined(_WM_NEXTDLGCTL)
  326.     virtual void WMNEXTDLGCTL(WinAppMsg& m)         {    DefWinProc(m); }
  327. #endif
  328. #if defined(_WM_SPOOLERSTATUS)
  329.     virtual void WMSPOOLERSTATUS(WinAppMsg& m)      {    DefWinProc(m); }
  330. #endif
  331. #if defined(_WM_DRAWITEM)
  332.     virtual void WMDRAWITEM(WinAppMsg& m)           {    DefWinProc(m); }
  333. #endif
  334. #if defined(_WM_MEASUREITEM)
  335.     virtual void WMMEASUREITEM(WinAppMsg& m)        {    DefWinProc(m); }
  336. #endif
  337. #if defined(_WM_DELETEITEM)
  338.     virtual void WMDELETEITEM(WinAppMsg& m)         {    DefWinProc(m); }
  339. #endif
  340. #if defined(_WM_VKEYTOITEM)
  341.     virtual void WMVKEYTOITEM(WinAppMsg& m)         {    DefWinProc(m); }
  342. #endif
  343. #if defined(_WM_CHARTOITEM)
  344.     virtual void WMCHARTOITEM(WinAppMsg& m)         {    DefWinProc(m); }
  345. #endif
  346. #if defined(_WM_SETFONT)
  347.     virtual void WMSETFONT(WinAppMsg& m)            {    DefWinProc(m); }
  348. #endif
  349. #if defined(_WM_GETFONT)
  350.     virtual void WMGETFONT(WinAppMsg& m)            {    DefWinProc(m); }
  351. #endif
  352. #if defined(_WM_QUERYDRAGICON)
  353.     virtual void WMQUERYDRAGICON(WinAppMsg& m)      {    DefWinProc(m); }
  354. #endif
  355. #if defined(_WM_COMPAREITEM)
  356.     virtual void WMCOMPAREITEM(WinAppMsg& m)        {    DefWinProc(m); }
  357. #endif
  358. #if defined(_WM_COMPACTING)
  359.     virtual void WMCOMPACTING(WinAppMsg& m)         {    DefWinProc(m); }
  360. #endif
  361. #if defined(_WM_NCCREATE)
  362.     virtual void WMNCCREATE(WinAppMsg& m)           {    DefWinProc(m); }
  363. #endif
  364. #if defined(_WM_NCDESTROY)
  365.     virtual void WMNCDESTROY(WinAppMsg& m)          {    DefWinProc(m); }
  366. #endif
  367. #if defined(_WM_NCCALCSIZE)
  368.     virtual void WMNCCALCSIZE(WinAppMsg& m)         {    DefWinProc(m); }
  369. #endif
  370. #if defined(_WM_NCHITTEST)
  371.     virtual void WMNCHITTEST(WinAppMsg& m)          {    DefWinProc(m); }
  372. #endif
  373. #if defined(_WM_NCPAINT)
  374.     virtual void WMNCPAINT(WinAppMsg& m)            {    DefWinProc(m); }
  375. #endif
  376. #if defined(_WM_NCACTIVATE)
  377.     virtual void WMNCACTIVATE(WinAppMsg& m)         {    DefWinProc(m); }
  378. #endif
  379. #if defined(_WM_GETDLGCODE)
  380.     virtual void WMGETDLGCODE(WinAppMsg& m)         {    DefWinProc(m); }
  381. #endif
  382. #if defined(_WM_NCMOUSEMOVE)
  383.     virtual void WMNCMOUSEMOVE(WinAppMsg& m)        {    DefWinProc(m); }
  384. #endif
  385. #if defined(_WM_NCLBUTTONDOWN)
  386.     virtual void WMNCLBUTTONDOWN(WinAppMsg& m)      {    DefWinProc(m); }
  387. #endif
  388. #if defined(_WM_NCLBUTTONUP)
  389.     virtual void WMNCLBUTTONUP(WinAppMsg& m)        {    DefWinProc(m); }
  390. #endif
  391. #if defined(_WM_NCLBUTTONDBLCLK)
  392.     virtual void WMNCLBUTTONDBLCLK(WinAppMsg& m)    {    DefWinProc(m); }
  393. #endif
  394. #if defined(_WM_NCRBUTTONDOWN)
  395.     virtual void WMNCRBUTTONDOWN(WinAppMsg& m)      {    DefWinProc(m); }
  396. #endif
  397. #if defined(_WM_NCRBUTTONUP)
  398.     virtual void WMNCRBUTTONUP(WinAppMsg& m)        {    DefWinProc(m); }
  399. #endif
  400. #if defined(_WM_NCRBUTTONDBLCLK)
  401.     virtual void WMNCRBUTTONDBLCLK(WinAppMsg& m)    {    DefWinProc(m); }
  402. #endif
  403. #if defined(_WM_NCMBUTTONDOWN)
  404.     virtual void WMNCMBUTTONDOWN(WinAppMsg& m)      {    DefWinProc(m); }
  405. #endif
  406. #if defined(_WM_NCMBUTTONUP)
  407.     virtual void WMNCMBUTTONUP(WinAppMsg& m)        {    DefWinProc(m); }
  408. #endif
  409. #if defined(_WM_NCMBUTTONDBLCLK)
  410.     virtual void WMNCMBUTTONDBLCLK(WinAppMsg& m)    {    DefWinProc(m); }
  411. #endif
  412. #if defined(_WM_KEYFIRST)
  413.     virtual void WMKEYFIRST(WinAppMsg& m)           {    DefWinProc(m); }
  414. #endif
  415. #if defined(_WM_KEYDOWN)
  416.     virtual void WMKEYDOWN(WinAppMsg& m)            {    DefWinProc(m); }
  417. #endif
  418. #if defined(_WM_KEYUP)
  419.     virtual void WMKEYUP(WinAppMsg& m)              {    DefWinProc(m); }
  420. #endif
  421. #if defined(_WM_CHAR)
  422.     virtual void WMCHAR(WinAppMsg& m)               {    DefWinProc(m); }
  423. #endif
  424. #if defined(_WM_DEADCHAR)
  425.     virtual void WMDEADCHAR(WinAppMsg& m)           {    DefWinProc(m); }
  426. #endif
  427. #if defined(_WM_SYSKEYDOWN)
  428.     virtual void WMSYSKEYDOWN(WinAppMsg& m)         {    DefWinProc(m); }
  429. #endif
  430. #if defined(_WM_SYSKEYUP)
  431.     virtual void WMSYSKEYUP(WinAppMsg& m)           {    DefWinProc(m); }
  432. #endif
  433. #if defined(_WM_SYSCHAR)
  434.     virtual void WMSYSCHAR(WinAppMsg& m)            {    DefWinProc(m); }
  435. #endif
  436. #if defined(_WM_SYSDEADCHAR)
  437.     virtual void WMSYSDEADCHAR(WinAppMsg& m)        {    DefWinProc(m); }
  438. #endif
  439. #if defined(_WM_KEYLAST)
  440.     virtual void WMKEYLAST(WinAppMsg& m)            {    DefWinProc(m); }
  441. #endif
  442. #if defined(_WM_INITDIALOG)
  443.     virtual void WMINITDIALOG(WinAppMsg& m)         {    DefWinProc(m); }
  444. #endif
  445. #if defined(_WM_COMMAND)
  446.     virtual void WMCOMMAND(WinAppMsg& m)    
  447.         {
  448.         UserCommandMessages(m);
  449.         if(!m.userMsgUsed)
  450.             DefWinProc(m);
  451.         }
  452. #endif
  453. #if defined(_WM_SYSCOMMAND)
  454.     virtual void WMSYSCOMMAND(WinAppMsg& m)         {    DefWinProc(m); }
  455. #endif
  456. #if defined(_WM_TIMER)
  457.     virtual void WMTIMER(WinAppMsg& m)              {    DefWinProc(m); }
  458. #endif
  459. #if defined(_WM_HSCROLL)
  460.     virtual void WMHSCROLL(WinAppMsg& m)            {    DefWinProc(m); }
  461. #endif
  462. #if defined(_WM_VSCROLL)
  463.     virtual void WMVSCROLL(WinAppMsg& m)            {    DefWinProc(m); }
  464. #endif
  465. #if defined(_WM_INITMENU)
  466.     virtual void WMINITMENU(WinAppMsg& m)           {    DefWinProc(m); }
  467. #endif
  468. #if defined(_WM_INITMENUPOPUP)
  469.     virtual void WMINITMENUPOPUP(WinAppMsg& m)      {    DefWinProc(m); }
  470. #endif
  471. #if defined(_WM_MENUSELECT)
  472.     virtual void WMMENUSELECT(WinAppMsg& m)         {    DefWinProc(m); }
  473. #endif
  474. #if defined(_WM_MENUCHAR)
  475.     virtual void WMMENUCHAR(WinAppMsg& m)           {    DefWinProc(m); }
  476. #endif
  477. #if defined(_WM_ENTERIDLE)
  478.     virtual void WMENTERIDLE(WinAppMsg& m)          {    DefWinProc(m); }
  479. #endif
  480. #if defined(_WM_MOUSEFIRST)
  481.     virtual void WMMOUSEFIRST(WinAppMsg& m)         {    DefWinProc(m); }
  482. #endif
  483. #if defined(_WM_MOUSEMOVE)
  484.     virtual void WMMOUSEMOVE(WinAppMsg& m)          {    DefWinProc(m); }
  485. #endif
  486. #if defined(_WM_LBUTTONDOWN)
  487.     virtual void WMLBUTTONDOWN(WinAppMsg& m)        {    DefWinProc(m); }
  488. #endif
  489. #if defined(_WM_LBUTTONUP)
  490.     virtual void WMLBUTTONUP(WinAppMsg& m)          {    DefWinProc(m); }
  491. #endif
  492. #if defined(_WM_LBUTTONDBLCLK)
  493.     virtual void WMLBUTTONDBLCLK(WinAppMsg& m)      {    DefWinProc(m); }
  494. #endif
  495. #if defined(_WM_RBUTTONDOWN)
  496.     virtual void WMRBUTTONDOWN(WinAppMsg& m)        {    DefWinProc(m); }
  497. #endif
  498. #if defined(_WM_RBUTTONUP)
  499.     virtual void WMRBUTTONUP(WinAppMsg& m)          {    DefWinProc(m); }
  500. #endif
  501. #if defined(_WM_RBUTTONDBLCLK)
  502.     virtual void WMRBUTTONDBLCLK(WinAppMsg& m)      {    DefWinProc(m); }
  503. #endif
  504. #if defined(_WM_MBUTTONDOWN)
  505.     virtual void WMMBUTTONDOWN(WinAppMsg& m)        {    DefWinProc(m); }
  506. #endif
  507. #if defined(_WM_MBUTTONUP)
  508.     virtual void WMMBUTTONUP(WinAppMsg& m)          {    DefWinProc(m); }
  509. #endif
  510. #if defined(_WM_MBUTTONDBLCLK)
  511.     virtual void WMMBUTTONDBLCLK(WinAppMsg& m)      {    DefWinProc(m); }
  512. #endif
  513. #if defined(_WM_MOUSELAST)
  514.     virtual void WMMOUSELAST(WinAppMsg& m)          {    DefWinProc(m); }
  515. #endif
  516. #if defined(_WM_PARENTNOTIFY)
  517.     virtual void WMPARENTNOTIFY(WinAppMsg& m)       {    DefWinProc(m); }
  518. #endif
  519. #if defined(_WM_MDICREATE)
  520.     virtual void WMMDICREATE(WinAppMsg& m)          {    DefWinProc(m); }
  521. #endif
  522. #if defined(_WM_MDIDESTROY)
  523.     virtual void WMMDIDESTROY(WinAppMsg& m)         {    DefWinProc(m); }
  524. #endif
  525. #if defined(_WM_MDIACTIVATE)
  526.     virtual void WMMDIACTIVATE(WinAppMsg& m)        {    DefWinProc(m); }
  527. #endif
  528. #if defined(_WM_MDIRESTORE)
  529.     virtual void WMMDIRESTORE(WinAppMsg& m)         {    DefWinProc(m); }
  530. #endif
  531. #if defined(_WM_MDINEXT)
  532.     virtual void WMMDINEXT(WinAppMsg& m)            {    DefWinProc(m); }
  533. #endif
  534. #if defined(_WM_MDIMAXIMIZE)
  535.     virtual void WMMDIMAXIMIZE(WinAppMsg& m)        {    DefWinProc(m); }
  536. #endif
  537. #if defined(_WM_MDITILE)
  538.     virtual void WMMDITILE(WinAppMsg& m)            {    DefWinProc(m); }
  539. #endif
  540. #if defined(_WM_MDICASCADE)
  541.     virtual void WMMDICASCADE(WinAppMsg& m)         {    DefWinProc(m); }
  542. #endif
  543. #if defined(_WM_MDIICONARRANGE)
  544.     virtual void WMMDIICONARRANGE(WinAppMsg& m)     {    DefWinProc(m); }
  545. #endif
  546. #if defined(_WM_MDIGETACTIVE)
  547.     virtual void WMMDIGETACTIVE(WinAppMsg& m)       {    DefWinProc(m); }
  548. #endif
  549. #if defined(_WM_MDISETMENU)
  550.     virtual void WMMDISETMENU(WinAppMsg& m)         {    DefWinProc(m); }
  551. #endif
  552. #if defined(_WM_CUT)
  553.     virtual void WMCUT(WinAppMsg& m)                {    DefWinProc(m); }
  554. #endif
  555. #if defined(_WM_COPY)
  556.     virtual void WMCOPY(WinAppMsg& m)               {    DefWinProc(m); }
  557. #endif
  558. #if defined(_WM_PASTE)
  559.     virtual void WMPASTE(WinAppMsg& m)              {    DefWinProc(m); }
  560. #endif
  561. #if defined(_WM_CLEAR)
  562.     virtual void WMCLEAR(WinAppMsg& m)              {    DefWinProc(m); }
  563. #endif
  564. #if defined(_WM_UNDO)
  565.     virtual void WMUNDO(WinAppMsg& m)               {    DefWinProc(m); }
  566. #endif
  567. #if defined(_WM_RENDERFORMAT)
  568.     virtual void WMRENDERFORMAT(WinAppMsg& m)       {    DefWinProc(m); }
  569. #endif
  570. #if defined(_WM_RENDERALLFORMATS)
  571.     virtual void WMRENDERALLFORMATS(WinAppMsg& m)   {    DefWinProc(m); }
  572. #endif
  573. #if defined(_WM_DESTROYCLIPBOARD)
  574.     virtual void WMDESTROYCLIPBOARD(WinAppMsg& m)   {    DefWinProc(m); }
  575. #endif
  576. #if defined(_WM_DRAWCLIPBOARD)
  577.     virtual void WMDRAWCLIPBOARD(WinAppMsg& m)      {    DefWinProc(m); }
  578. #endif
  579. #if defined(_WM_PAINTCLIPBOARD)
  580.     virtual void WMPAINTCLIPBOARD(WinAppMsg& m)     {    DefWinProc(m); }
  581. #endif
  582. #if defined(_WM_VSCROLLCLIPBOARD)
  583.     virtual void WMVSCROLLCLIPBOARD(WinAppMsg& m)   {    DefWinProc(m); }
  584. #endif
  585. #if defined(_WM_SIZECLIPBOARD)
  586.     virtual void WMSIZECLIPBOARD(WinAppMsg& m)      {    DefWinProc(m); }
  587. #endif
  588. #if defined(_WM_ASKCBFORMATNAME)
  589.     virtual void WMASKCBFORMATNAME(WinAppMsg& m)    {    DefWinProc(m); }
  590. #endif
  591. #if defined(_WM_CHANGECBCHAIN)
  592.     virtual void WMCHANGECBCHAIN(WinAppMsg& m)      {    DefWinProc(m); }
  593. #endif
  594. #if defined(_WM_HSCROLLCLIPBOARD)
  595.     virtual void WMHSCROLLCLIPBOARD(WinAppMsg& m)   {    DefWinProc(m); }
  596. #endif
  597. #if defined(_WM_QUERYNEWPALETTE)
  598.     virtual void WMQUERYNEWPALETTE(WinAppMsg& m)    {    DefWinProc(m); }
  599. #endif
  600. #if defined(_WM_PALETTEISCHANGING)
  601.     virtual void WMPALETTEISCHANGING(WinAppMsg& m)  {    DefWinProc(m); }
  602. #endif
  603. #if defined(_WM_PALETTECHANGED)
  604.     virtual void WMPALETTECHANGED(WinAppMsg& m)     {    DefWinProc(m); }
  605. #endif
  606.  
  607.     };
  608.  
  609. inline void SetWindowPointer(HWND hWnd, void *ptr)
  610.     {
  611. #if defined(__SMALL__) || defined(__MEDIUM__)
  612.     SetWindowWord(hWnd,0,(WORD)ptr);
  613. #elif defined(__LARGE__) || defined(__COMPACT__) || defined(__HUGE__)
  614.     SetWindowLong(hWnd,0,(LONG)ptr);
  615. #else
  616.     #error Must use Small, Medium, Large, Compact or Huge models!
  617. #endif
  618.     }
  619.  
  620. inline Window *GetWindowPointer(HWND hWnd)
  621.     {
  622. #if defined(__SMALL__) || defined(__MEDIUM__)
  623.     return (Window *)GetWindowWord(hWnd,0);
  624. #elif defined(__LARGE__) || defined(__COMPACT__) || defined(__HUGE__)
  625.     return (Window *)GetWindowLong(hWnd,0);
  626. #else
  627.     #error Must use Small, Medium, Large, Compact or Huge models!
  628. #endif
  629.     }
  630.  
  631. void PASCAL StdWndProc(Window *w, WinAppMsg& m);
  632.  
  633. #endif
  634.  
  635.